home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / sbin / atmel_fwl.pl < prev    next >
Perl Script  |  2005-12-21  |  2KB  |  56 lines

  1. #!/usr/bin/perl
  2.  
  3. #     Firmware loader for Atmel at76c502 at76c504 and at76c506 wireless cards.
  4. #
  5. #            Copyright 2004 Simon Kelley.
  6. #
  7. #    This program is free software; you can redistribute it and/or modify
  8. #    it under the terms of the GNU General Public License as published by
  9. #    the Free Software Foundation; either version 2 of the License, or
  10. #    (at your option) any later version.
  11. #
  12. #    This software is distributed in the hope that it will be useful,
  13. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #    GNU General Public License for more details.
  16. #
  17. #    You should have received a copy of the GNU General Public License
  18. #    along with Atmel wireless lan drivers; if not, write to the Free Software
  19. #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20.  
  21. use Socket;
  22. use File::Basename;
  23.  
  24. use constant ATMELFWL => 0x8be0;
  25. use constant ATMELIDIFC => 0x8be1;
  26. use constant ATMELMAGIC => 0x51807;
  27.  
  28. (($iface = shift(@ARGV)) && ($file = shift(@ARGV))) ||
  29.     die "Usage: atmel_fwl <interface> <path/to/firmware>";
  30.  
  31. socket (Socket, PF_INET, SOCK_DGRAM, getprotobyname('udp')) 
  32.     || die "Cannot create socket: $!";
  33.  
  34. $ifr = pack("Z16 L", $iface, 0x0);
  35. (ioctl(Socket, ATMELIDIFC, $ifr) && 
  36.  (unpack("Z16 L", $ifr))[1] == ATMELMAGIC) || 
  37.     die "$iface is not an Atmel interface";
  38.  
  39. local ($/);
  40. use bytes;
  41.  
  42. open (File, "<:raw", $file) || die "Cannot open $file: $!";
  43. $image = <File>;
  44. $len = length $image;
  45. close(File);
  46.  
  47. $priv = pack("Z32 P S", basename($file), $image, $len);
  48. $ifr = pack("Z16 P", $iface, $priv);
  49.  
  50. ioctl(Socket, ATMELFWL, $ifr) ||
  51.     die "Firmware load failed: $!";
  52.  
  53.  
  54.  
  55.  
  56.